#Unity のCLIでゲームとAddressablesアセットをビルドしてみた
こんにちは、ゲームソリューショングループの入井です。
UnityでCI/CDを行いたい場合、公式が用意しているCloudBuildを使用するのが最もポピュラーな方法になると思われます。
Unity Cloud Build - Unity マニュアル
または、オープンソースのビルドツールであるGameCIをCircleCI等で動かすという方法もあるでしょう。
GameCI · The fastest and easiest way to automatically test and build your game projects
一方で、ローカル環境上でCLI環境でビルドなどを手軽に行いたい場合は、Unityをコマンドで実行する必要があります。
今回は、UnityのゲームビルドをCLI経由で行う方法を書いていきます。
実行環境
- Windows11
- 検証時点(2023/01/17)の最新のアップデート適用
- Unity 2021.3.16f
- Addressables 1.19.19
ビルド用コード
コマンドによるビルドを行うためには、その手順を書いたC#コードをプロジェクトディレクトリ内に書く必要があります。
以下のコードをAssets/Editor内に保存します。なお、Editorディレクトリ以外に保存すると実行時にエラーが起きるため注意してください。
using UnityEditor; public class Builder { public static void Build() { // Addressablesのビルド UnityEditor.AddressableAssets.Settings.AddressableAssetSettings.BuildPlayerContent(); // ビルド対象のシーンを配列内に指定 string[] scenes = { "Assets/Scenes/SampleScene.unity" }; // ビルドオプション var options = new BuildPlayerOptions { target = BuildTarget.StandaloneWindows64, locationPathName = "Build/Test.exe", scenes = scenes }; // ビルド実行 BuildPipeline.BuildPlayer(options); } }
Addressablesのビルド
AddressableAssetSettings.BuildPlayerContent()
にて、Addressableseで管理しているアセットのビルドを行っています。
Addressableseについては、以下の記事や公式のガイドを参照してください。
#Unity の Addressablesを使ってAWSのS3上のアセットデータをCloudFront経由でロードしてみた | DevelopersIO
Addressables でコンテンツ管理を簡素化する | ビデオゲーム開発 | Unity
単純にこのメソッドを実行するだけだと、Unityエディタで指定した設定でビルドが行われます。
前段で設定関係のコードを書くことで、細かな設定を変更したり別の設定ファイルを読み込むなどビルドのカスタマイズが行えます。
Build scripting | Addressables | 1.19.19
ゲームのビルド
BuildPipeline.BuildPlayer(options)
にて、ゲーム本体のビルドを行っています。前段では、ビルドについての設定を指定する必要があります。
target
には、ビルドをどのプラットフォームに向けて行うかを指定します。上記コードでは、64bit Windows環境を指定しています。
locationPathName
には、ビルドの結果を書き出すパスを指定します。パスの起点は、対象のUnityプロジェクトが保存されているディレクトリになります。
scenes
には、ビルド対象のシーンを文字列配列で指定します。上記コードでは、Assets/Scenes/SampleScene.unity
というデフォルトで作られるシーンのみを指定しています。
最低限、上記の設定がしてあればビルドの実行が可能です。
その他の設定項目等については公式ドキュメントを参照してください。
Unity - Scripting API: BuildPlayerOptions
コード実行用コマンド
ビルド用コードが用意できたら、コマンドでUnityを実行します。以下は、Windows環境で実行する場合の例です。
"C:\Program Files\Unity\Hub\Editor\2021.3.16f1\Editor\Unity.exe" -batchmode -quit -projectPath . -logfile build.log -executeMethod Builder.Build
実行対象として、Unityのexeファイルを指定します。
batchmode
とquit
オプションにより、Unityエディタを起動することなく処理が完了します。
projectPath
オプションでは、処理を行う対象のプロジェクトを相対パスで指定します。
logfile
オプションにより、コマンドの実行ログを書き出す先を指定します。
executeMethod
オプションで、実行するC#メソッドを指定します。
その他のコマンドオプションは公式ドキュメントを参照してください。
実行結果
プロジェクトディレクトリ下のBuildディレクトリに以下のようにゲームビルドの結果が書き出されます。この時、予めBuildディレクトリを作成していないとビルドエラーが起きるためご注意ください。
Addressablesのアセットのビルド結果については、設定で指定した通りの場所に書き出されます。標準では、プロジェクトディレクトリ下のServerDataディレクトリ内です。
まとめ
CLIでUnityのビルドを行うことができました。
なお、今回書いたコードは、GameCIでもオプションでメソッドを指定することで実行が可能なため、CircleCIなどのCI/CDツールでも実行が可能です。
この記事では最低限の設定しか行なっていませんが、コードをカスタマイズすることにより細かくビルドの内容を調整することが可能なため、うまく活用すれば手動で行なっていたビルドの自動化ができるようになるでしょう。